﻿#define _CRT_SECURE_NO_WARNINGS 1

/**
 *
 * @param rotateArray int整型一维数组
 * @param rotateArrayLen int rotateArray数组长度
 * @return int整型
 */

 //有一个长度为 n 的非降序数组，比如[1,2,3,4,5]，将它进行旋转，即把一个数组最开始的若干个元素搬到数组的末尾，变成一个旋转数组，
 //比如变成了[3,4,5,1,2]，或者[4,5,1,2,3]这样的。请问，给定这样一个旋转数组，求数组中的最小值。

int minNumberInRotateArray(int* rotateArray, int rotateArrayLen) {
	// write code here
	//初始判断
	if (rotateArrayLen == 0) return 0;
	//定义变量
	int left = 0;
	int right = rotateArrayLen - 1;
	int mid = 0;
	//初始判断2
	if (rotateArray[right] > rotateArray[left])
		return rotateArray[0];
	//判断
	while (left < right)
	{
		mid = left + (right - left) / 2;
		if (rotateArray[mid] > rotateArray[right])
			left = mid + 1;
		else if (rotateArray[mid] == rotateArray[right])
			right--;
		else
			right = mid;
	}
	//返回最小值
	return rotateArray[left];
}